home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / p063b9s.zip / UTIL / LOGUSAGE.PAS < prev    next >
Pascal/Delphi Source File  |  1992-12-15  |  2KB  |  86 lines

  1. PROGRAM LogUsage;
  2.  
  3. USES Dos, OpDate, PopTypes, Misc;
  4.  
  5. VAR
  6.   f : File Of DateTimeRec;
  7.   EndTime,
  8.   StartTime : DateTimeRec;
  9.   Err : Integer;
  10.   st : Byte;
  11.   Task : String[3];
  12.  
  13. PROCEDURE UpdateUsageStat(StartTime,EndTime: DateTimeRec; StatType: Byte; Path: PathStr);
  14. VAR
  15.   StatRec : TPortalStat;
  16.   StatFil : File Of TPortalStat;
  17.   i, StartHour, StartMin, StartSec, EndHour, EndMin, EndSec : Byte;
  18.   Dow : DayType;
  19. BEGIN
  20.   IF IOResult=0 THEN ;
  21.   Assign(StatFil,'PORTAL'+GetPoPTask+'.STA');
  22.   FileMode:=$22;
  23.   FillChar(StatRec, SizeOf(StatRec), 0);
  24.   Reset(StatFil);
  25.   IF IoResult<>0 THEN
  26.   BEGIN
  27.     Rewrite(StatFil);
  28.     StatRec.Start:=StartTime;
  29.   END ELSE
  30.     Read(StatFil,StatRec);
  31.   IF IOResult=0 THEN ;
  32.   DoW:=DayOfWeek(StartTime.D);
  33.   TimeToHMS(EndTime.T,EndHour,EndMin,EndSec);
  34.   TimeToHMS(StartTime.T,StartHour,StartMin,StartSec);
  35.   i:=StartHour;
  36.   WITH StatRec DO
  37.   BEGIN
  38.     REPEAT
  39.       IF i=StartHour THEN
  40.       BEGIN
  41.         IF EndHour<>StartHour THEN
  42.           Inc(Usage[StatType,DoW,i],60-StartMin)
  43.         ELSE
  44.           Inc(Usage[StatType,DoW,i],EndMin-StartMin);
  45.       END ELSE
  46.       BEGIN
  47.         IF i<>EndHour THEN
  48.           Inc(Usage[StatType,DoW,i],60)
  49.         ELSE
  50.           Inc(Usage[StatType,DoW,i],EndMin);
  51.       END;
  52.       Inc(i);
  53.       IF i>23 THEN
  54.       BEGIN
  55.         i:=0;
  56.         DoW:=Succ(DoW);
  57.       END;
  58.     UNTIL (i>EndHour) OR ((EndHour=23) and (i=0));
  59.   END;
  60.   Seek(StatFil,0); Write(StatFil,StatRec); Close(StatFil);
  61. END;
  62.  
  63. BEGIN
  64.   WriteLn('Portal usage statistic updater');
  65.   Task:=GetPoPTask;
  66.   IF Task='' THEN Task:='00' ;
  67.   Assign(f,'POPUSAGE.T'+Task);
  68.   Reset(f);
  69.   IF IOResult=0 THEN
  70.   BEGIN
  71.     EndTime.D:=Today; EndTime.T:=CurrentTime;
  72.     WriteLn('Stopping timer');
  73.     Read(f,StartTime);
  74.     IF ParamCount<1 THEN st:=0 ELSE Val(ParamStr(1),st,Err);
  75.     UpdateUsageStat(StartTime,EndTime,st,'');
  76.     Close(f); Erase(f);
  77.   END ELSE
  78.   BEGIN
  79.     WriteLn('Starting timer');
  80.     Rewrite(f);
  81.     StartTime.T:=CurrentTime; StartTime.D:=Today;
  82.     Write(f,StartTime);
  83.     Close(f);
  84.   END;
  85. END.
  86.